<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        arr = [4, 6,9, 2, 7, 3, 6]
        //forEach方法
        // function myForEach(arr,fn){
        //     for(var i=0;i<arr.length;i++){
        //         fn(arr[i],i,arr);
        //     }
        // }
        // function fn(item,index,curArr){
        //     return console.log(item);
        // }
        // myForEach(arr,fn);

        //map方法
        // function myMap(arr,fn){
        //     var res =[]
        //     for(var i=0;i<arr.length;i++){
        //         a = fn(arr[i],i,arr);
        //         res.push(a)
        //     }
        //     return res
        // }
        // function fn(item,index,curArr){
        //     return item+'!';
        // }
        // console.log(myMap(arr,fn));

        //filter方法
        // function myFilter(arr, fn) {
        //     var res = []
        //     for (var i = 0; i < arr.length; i++) {
        //         if (fn(arr[i], i, arr)) {
        //             res.push(arr[i])
        //         };
        //     }
        //     return res
        // }
        // function fn(item, index, curArr) {
        //     return item > 5
        // }
        // console.log(myFilter(arr, fn));

        //some方法
        // function mySome(arr, fn) {
        //     var res = false;
        //     for (var i = 0; i < arr.length; i++) {
        //         // res = res | fn(arr[i], i, arr)//全遍历
        //         if (fn(arr[i], i, arr)) {//遇到true会停
        //             res = true;
        //             break
        //         }
        //     }
        //     res = !!res
        //     return res
        // }
        // function fn(item, index, curArr) {
        //     return item > 7
        // }
        // console.log(mySome(arr, fn));


        //every方法
        // function myEvery(arr, fn) {
        //     var res = true;
        //     for (var i = 0; i < arr.length; i++) {
        //         // res = res && fn(arr[i], i, arr)//全遍历
        //         if (fn(arr[i], i, arr) === false) {//遇到false会停
        //             res = false;
        //             break
        //         }
        //     }
        //     return res
        // }
        // function fn(item, index, curArr) {
        //     return item < 6
        // }
        // console.log(myEvery(arr, fn));

        //reduce方法
        //循环数组,把fn处理过的结果加到pre上
        // function myReduce(arr, fn, pre) {
        //     for (var i = 0; i < arr.length; i++) {
        //         if(pre !== undefined){
        //             pre = fn(pre, arr[i])
        //         }else{
        //             var pre = arr[i];
        //         }
        //     }
        //     return pre
        // }
        // function fn(pre, current) {
        //     // pre += current//数值
        //     // pre.push(current)//数组
        //     // pre[current] = current;//对象
        //     return pre
        // }
        // console.log(myReduce(arr, fn,[]));
    </script>
</body>

</html>